The present invention relates in general to data processing systems, and in particular, to switching of data transmissions in a network.
In a networking environment, it is typical that a plurality of devices will be linked together for the purpose of transmitting data from one device to another in the network. In a large network, it would be uneconomical to provide a specific data link connecting each device to each of the other devices in the network. In order to provide connectivity from each device to each of the other devices in the network in an efficient and economical manner, a plurality of methods have been developed.
One well known method of distributing data between devices within a network is through switches (also referred to herein as network nodes). Switches may be utilized within the network to receive data from a plurality of devices and distribute the data to a plurality of devices to reduce the amount of data lines required to distribute data. To utilize switches to communicate between devices, each device has a specific address. For example, in an Ethernet switching environment, each device in the network has a media access control (MAC) address, which uniquely identifies the device in the network. Frames of data are delivered to a MAC destination address (DA) and senders are recognized by a MAC source address (SA). Each switch, and each port on a switch, supports a finite number of MAC addresses. Ideally, the overall number of MAC addresses distributed by a switch should be large, so the switch can support a large number of devices.
In addition to supporting a large number of devices, a switch should comprise the ability to handle transfer of large amounts of data through a network. For a switch to handle quick transfer of large amounts of data, often link aggregation is utilized in order to allow a switch to support a higher bandwidth interface to increase the rate of data transfer. Link aggregation is a technique that allows parallel physical links between switches or between a switch and a server to be used simultaneously, multiplying the bandwidth between the devices. Link aggregation may be further defined as a method of grouping physical link segments of the same media type and speed, and treating them as if they were part of a single, logical link segment. For example, two 100 Mbps links between switches may be grouped into a link aggregation and treated as a single 200 Mbps link to create a higher bandwidth interface between the two switches.
In designing a switch that supports transmission of multicast or broadcast traffic, there are two general approaches that can be used to transmit packets within the switch to their outbound (egress) ports. The first solution is to simply send the packet once to each outbound port. The second solution is to use a one-to-many solution that allows one transmit with multiple destinations. The first solution is generally more costly because it requires more processor cycles to perform the multiple transmits, and may require additional buffers. The second solution is generally more efficient from a processor perspective because it requires a single transmit of a single buffer, but may require a more sophisticated bus/switching fabric to exist between the ports.
In architectures that support a one-to-many transmission, transmitting traffic out more than one outbound port (multi-destination traffic) is fairly simple until the egress ports need to handle the frames differently based on criteria such as a link aggregation virtual interface. With multiple permutations of these possible groups, creating and managing multicast groups at the sender becomes complex, particularly when the sender is a high-bandwidth/low-latency processor on the forwarding path of a high-speed switch, i.e. there are no extra cycles available for such complex management. In such a situation, maintaining a small number of multicast groups at the sender is profitable, and the determination of whether or not to transmit a particular broadcast/multicast frame is now made at the outbound port.
The specific problem addressed here is how to use a one-to-many transmit strategy for link aggregation. In link aggregation, there is a requirement that frames not be duplicated on the link aggregation group (xe2x80x9cLAGxe2x80x9d), i.e. a frame destined for the LAG must be transmitted on exactly one link. Additionally, it is required that frames be delivered to the destination in the order they were transmitted from the source. In an architecture using a one-to-many transmit design for multi-destination traffic, some method must be employed to guarantee that traffic is transmitted on exactly one port. Additionally, the method should allow distribution of multi-destination traffic over a range of the physical links that belong to the LAG, as opposed to merely designating one port to handle such multi-destination traffic.
Link aggregation architectures often impose a restriction that traffic must arrive at the destination in the order it was transmitted from the source. In order to guarantee this, link aggregation systems usually assign flows to physical links, where a flow is at a minimum determined by the destination MAC address, and possibly includes the source MAC, or higher layer criteria (such as IP address, UDP port, etc.). A distribution algorithm is used to determine on which physical link in the LAG a particular frame should be transmitted, and the frame is directed through the switch to that particular port.
In the case of multi-destination traffic in a one-to-many design, the frame must be delivered to all ports. In the case of physical ports that are members of a LAG, a decision is made at the egress port determining whether or not to transmit this multi-destination frame. The present solution is to run the distribution algorithm on the candidate outbound frame to obtain the number of the physical interface on which the frame should be transmitted. If the physical interface provided by the distribution algorithm matches the interface number of the egress port, then the frame is transmitted, otherwise the frame is discarded.
The distribution algorithm must return the same result at each LAG port for a given frame.
The above algorithm guarantees that frames are not duplicated across the LAG, and allows efficient implementation of transmission of multi-destination traffic through the switch.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.